﻿using System;
using System.Web.UI.WebControls;
using System.Collections;
using CLab.Base;
using GandA.Component.Log;

namespace CLab.PagAdminLab
{
    public partial class CatProcedencia : PageBase
    {
        #region Eventos

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    InicializaPantalla();
                    //CargaGrid();
                }
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void BtnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                CargaGrid();
                if (gridProcedencia.Rows.Count == 0)
                {
                    Master.alertSinDatos();
                }

                SetFocus(txtDescripcion);
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void btnExportar_Click(object sender, EventArgs e)
        {
            try
            {
                gridProcedencia.ToExportCsv();
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void gridProcedencia_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                string[] sParams;
                switch (e.CommandName)
                {
                    case "cmdModificar":
                        sParams = e.CommandArgument.ToString().Split(',');
                        Response.Redirect(ResolveUrl("CatProcedenciaRegistro.aspx?IdProcedencia=" + sParams[0]), false);
                        break;
                    case "cmdEliminar":
                        sParams = e.CommandArgument.ToString().Split(',');
                        EliminaProcedencia(CLab.Common.Util.Convert.ToNInt(sParams[0]));
                        break;
                }
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        protected void gridProcedencia_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridProcedencia.PageIndex = e.NewPageIndex;
            CargaGrid();
        }

        protected void btnElimina_Click(object sender, EventArgs e)
        {
            try
            {
                int id = Common.Util.Convert.ToNInt(hdnId.Value).GetValueOrDefault(-1);
                EliminaProcedencia(id);
            }
            catch (Exception ex)
            {
                Log.WriteLog(ex, "Error en: btnElimina_Click");
                Master.alert(ex.Message);
            }
        }
        #endregion

        #region Métodos

        private void InicializaPantalla()
        {
            Master.TituloPagina = "Procedencia";
        }

        private void EliminaProcedencia(int? idProcedencia)
        {
            try
            {
                ProcedenciaServiceReference.ProcedenciaServiceClient servicio = new ProcedenciaServiceReference.ProcedenciaServiceClient();
                ProcedenciaServiceReference.Procedencia pro = new ProcedenciaServiceReference.Procedencia();
                pro.IdProcedencia = idProcedencia;
                pro.IdLaboratorio = SessionLaboratorio.IdLaboratorio;
                servicio.EliminaProcedencia(pro);
                CargaGrid();
            }
            catch (Exception ex)
            {
                Master.alert(ex.Message);
            }
        }

        private void CargaGrid()
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            // Parámetros
            parametros.Add(CreaParametroConsulta("@pnIdLaboratorio", SessionLaboratorio.IdLaboratorio, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdProcedencia", null, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@psDescripcion", txtDescripcion.Text.Trim(), ConsultaServiceReference.Parameter.vEnumType.VarChar));
            parametros.Add(CreaParametroConsulta("@pnIdSucursal", SessionLaboratorio.IdSucursal, ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] prms = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(prms);
            // Ejecuta conulta
            gridProcedencia.DataSource = servicio.EjecutaConsultaConParametros("spObtenProcedencia", prms);
            gridProcedencia.DataBind();
        }

        #endregion
    }
}